#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF内容提取：文字(200字)、表格、图片
"""

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

def extract_pdf_content(pdf_path):
    """
    提取PDF的所有内容：文字、表格、图片
    
    Args:
        pdf_path: PDF文件路径
    
    Returns:
        dict: 包含文字、表格、图片的字典
    """
    try:
        from rag.emm.Boos_rag import (
            extract_text_with_limit, 
            extract_tables_from_pdf, 
            extract_images_only
        )
        
        result = {}
        
        # 1. 提取200字文字
        print("📝 提取文字内容...")
        text_result = extract_text_with_limit(pdf_path, max_chars=200)
        result['text'] = {
            'content': text_result['extracted_text'],
            'total_chars': text_result['total_chars'],
            'truncated': text_result['truncated']
        }
        print(f"✅ 提取文字: {len(text_result['extracted_text'])}字符")
        
        # 2. 提取表格
        print("📊 提取表格...")
        tables = extract_tables_from_pdf(pdf_path)
        result['tables'] = tables
        print(f"✅ 提取表格: {len(tables)}个")
        
        # 3. 提取图片
        print("🖼️ 提取图片...")
        images = extract_images_only(pdf_path, save_dir="extracted_images")
        successful_images = [img for img in images if 'error' not in img]
        result['images'] = successful_images
        print(f"✅ 提取图片: {len(successful_images)}张")
        
        return result
        
    except Exception as e:
        print(f"❌ 提取失败: {e}")
        return {}

def display_results(result):
    """显示提取结果"""
    if not result:
        return
    
    print("\n" + "="*50)
    print("📋 提取结果汇总")
    print("="*50)
    
    # 显示文字
    if 'text' in result:
        text_info = result['text']
        print(f"\n📝 文字内容 ({len(text_info['content'])}字符):")
        print("-" * 30)
        print(text_info['content'])
        if text_info['truncated']:
            print(f"\n💡 原始文档共{text_info['total_chars']}字符，已截断为200字")
    
    # 显示表格
    if 'tables' in result:
        tables = result['tables']
        print(f"\n📊 表格信息 ({len(tables)}个):")
        print("-" * 30)
        if tables:
            for i, table in enumerate(tables):
                print(f"表格{i+1}: 第{table['page']}页")
                if hasattr(table['data'], 'head'):
                    print(f"  列数: {len(table['data'].columns)}")
                    print(f"  行数: {len(table['data'])}")
        else:
            print("未发现表格")
    
    # 显示图片
    if 'images' in result:
        images = result['images']
        print(f"\n🖼️ 图片信息 ({len(images)}张):")
        print("-" * 30)
        for i, img in enumerate(images):
            print(f"图片{i+1}: 第{img['page']}页 - {img['name']}")
            print(f"  尺寸: {img['actual_width']}x{img['actual_height']}")
            print(f"  大小: {img['file_size']}字节")
            if 'saved_path' in img:
                print(f"  路径: {img['saved_path']}")

# 主函数
def main():
    """主函数"""
    pdf_file = "rag/emm/Boss 直聘平台使用指南.pdf"
    
    if not os.path.exists(pdf_file):
        print(f"❌ 文件不存在: {pdf_file}")
        return
    
    print("🚀 开始提取PDF内容...")
    print(f"📁 文件: {pdf_file}")
    
    # 提取所有内容
    result = extract_pdf_content(pdf_file)
    
    # 显示结果
    display_results(result)
    
    print("\n✅ 提取完成！")

if __name__ == "__main__":
    main()
